import { Observable } from 'rxjs'

import {
  ITermPagination,
  ITerminalQueryParams,
  Terminal,
  TerminalNewRequest,
  ITerminalUpdateRequest,
  ITerminalReportPagination,
} from '@shared/interfaces/terminal'

export abstract class TerminalService {
  abstract getOne(intMerCode: string, intStoreCode: string): Observable<Terminal>

  abstract getList(params: ITerminalQueryParams): Observable<ITermPagination>

  abstract update(data: ITerminalUpdateRequest, intStoreCode: string, termCode: string): Observable<Terminal>

  abstract createTerminal(data: TerminalNewRequest): Observable<boolean>

  abstract deleteTerminal(intStoreCode: string, termCode: string): Observable<boolean>

  abstract getTerminalReport(params: ITerminalQueryParams, str?: string): Observable<ITerminalReportPagination>

  abstract refreshCdKey(intStoreCode: string, termCode: string): Observable<string>

  abstract freeze(intStoreCode: string, termCode: string): Observable<boolean>

  abstract unfreeze(intStoreCode: string, termCode: string): Observable<boolean>
}
